package com.suqiu.qqrobot.common.result;

import lombok.AllArgsConstructor;
import lombok.Getter;

@Getter
@AllArgsConstructor
public enum ResultCodeEnum implements IResultCode{

    /**
     * 操作成功
     */
    SUCCESS("200", "{ResultCodeEnum.SUCCESS}"),

    /**
     * 请求未授权
     */
    UNAUTHORIZED("401", "{ResultCodeEnum.UNAUTHORIZED}"),

    /**
     * 404 没找到请求
     */
    NOT_FOUND("404", "{ResultCodeEnum.NOT_FOUND}"),

    /**
     * 不支持当前请求方法
     */
    METHOD_NOT_SUPPORTED("405", "{ResultCodeEnum.METHOD_NOT_SUPPORTED}"),

    /**
     * 不支持当前媒体类型
     */
    MEDIA_TYPE_NOT_SUPPORTED("415", "{ResultCodeEnum.MEDIA_TYPE_NOT_SUPPORTED}"),

    /**
     * 请求被拒绝, 表示用户得到授权（与401错误相对），但是访问是被禁止的
     */
    FORBIDDEN("403", "{ResultCodeEnum.FORBIDDEN}"),


    /**
     * 服务器异常
     */
    INTERNAL_SERVER_ERROR("500", "{ResultCodeEnum.INTERNAL_SERVER_ERROR}"),

    /**
     * 邮件服务异常
     */
    MAIL_SERVER_FALLBACK("400", "{ResultCodeEnum.MAIL_SERVER_FALLBACK}"),

    /**
     * 验证码错误
     */
    CODE_VERIFY_ERROR("400", "{ResultCodeEnum.CODE_VERIFY_ERROR}"),

    /**
     * 登录服务异常
     */
    AUTH_SERVER_FALLBACK("400", "{ResultCodeEnum.AUTH_SERVER_FALLBACK}"),


    /////////////////////////////////////////////////////
    ///////以下是业务400错误
    /**
     * 缺少必要的请求参数
     */
    PARAM_MISS("400", "{ResultCodeEnum.PARAM_MISS}"),

    /**
     * 请求参数类型错误
     */
    PARAM_TYPE_ERROR("400", "{ResultCodeEnum.PARAM_TYPE_ERROR}"),

    /**
     * 请求参数绑定错误
     */
    PARAM_BIND_ERROR("400", "{ResultCodeEnum.PARAM_BIND_ERROR}"),

    /**
     * 参数校验失败
     */
    PARAM_VALID_ERROR("400", "{ResultCodeEnum.PARAM_VALID_ERROR}"),
    /**
     * 通用的业务异常，例如：限流异常、Feign调用异常等
     */
    FAILURE("400", "{ResultCodeEnum.FAILURE}"),
    /**
     * 消息不能读取
     */
    MSG_NOT_READABLE("400", "{ResultCodeEnum.MSG_NOT_READABLE}"),


    /**
     * token过期
     */
    TOKEN_EXPIRED("400","{ResultCodeEnum.TOKEN_EXPIRED}"),
    ////////////////////////////////////////////////
    /////////////////////////////////////////


    /**
     * 用户不存在
     */
    MOBILE_USER_NOEXIST("400","{ResultCodeEnum.MOBILE_USER_NOEXIST}"),

    /**
     * 密码不符合规则
     */
    PASSWORD_NOACCORD_RULE("400","{ResultCodeEnum.PASSWORD_NOACCORD_RULE}"),


    /**
     * 邮箱描述不符合规则
     */
    EMAIL_NOACCORD_RULE("400","{ResultCodeEnum.EMAIL_NOACCORD_RULE}"),

    /**
     * 邮箱格式错误
     */
    EMAIL_FORMAT_WRONG("400","{ResultCodeEnum.EMAIL_FORMAT_WRONG}"),

    /**
     * 邮箱确认错误
     */
    EMAIL_CONFIRM_WRONG("400","{ResultCodeEnum.EMAIL_CONFIRM_WRONG}"),


    /**
     * 用户帐号已经存在
     */
    ACCOUNT_ALREADY_EXIST("400","{ResultCodeEnum.ACCOUNT_ALREADY_EXIST}"),


    /**
     * 原密码错误
     */
    OLD_PASSWORD_INCORRECT("400","{ResultCodeEnum.OLD_PASSWORD_INCORRECT}"),

    /**
     * 旧邮箱验证错误
     */
    OLD_EMAIL_INCORRECT("400","{ResultCodeEnum.OLD_EMAIL_INCORRECT}"),

    /**
     *  账户已设置密码
     */
    PASSWORD_ALREADY_EXIST("400","{ResultCodeEnum.PASSWORD_ALREADY_EXIST}"),
    ;


    /**
     * code编码
     */
    final String code;
    /**
     * 中文信息描述
     */
    final String message;

    /**
     * 依据标签值获取枚举实例
     *
     * @param code 标签值
     * @return 标签枚举对象
     */
    public static ResultCodeEnum toEnum(final String code) {
        for (final ResultCodeEnum resultCodeEnum : ResultCodeEnum.values()) {
            if (resultCodeEnum.code.equals(code)) {
                return resultCodeEnum;
            }
        }
        return null;
    }

}
